/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Persistencia;

import Clases.Servicio;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Jerónimo Trigueros Vera
 */
public class PersistenciaServicio {

    public static int insertarServicio(Servicio servicio) {

        int ret = 0;

        String nombre = servicio.getNombre();
        String descripcion = servicio.getDescripcion();

        String sql = "insert into servicio (nombre, descripcion)"
                + " values ('" + nombre + "', '" + descripcion + "');";

        Connection con = null;
        Statement st = null;


        try {
            con = (Connection) Conexion.getConexion();
            st = (Statement) con.createStatement();
            ret = st.executeUpdate(sql);
        } catch (Exception e) {
            System.out.println("Error al insertar el servicio \n\n" + e.getMessage());
        } finally {
            Conexion.cerrarConexion(con);
        }

        return ret;
    }

    public static int actualizaServicio(Servicio servicio, String nombreBD) {

        int ret = 0;

        String nombre = servicio.getNombre();
        String descripcion = servicio.getDescripcion();

        String sql = "update servicio set nombre='" + nombre + "', descripcion='" + descripcion
                + "' where nombre='" + nombreBD + "';";

        Connection con = null;
        Statement st = null;

        try {
            con = (Connection) Conexion.getConexion();
            if (ret == 0) {
                st = (Statement) con.createStatement();
                ret = st.executeUpdate(sql);
            }
        } catch (Exception e) {
            System.out.println("Error al insertar el servicio \n\n" + e.getMessage());
        } finally {
            Conexion.cerrarConexion(con);
        }

        return ret;
    }

    public static Servicio obtenerServicio(String nombre) {

        // sentencia SQL
        String sql = "select * from servicio where nombre = '" + nombre + "';";

        // declaracion de variables para la conexion y ejecucion de la SQL en BD
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;


        String nombreS = null;
        String descripcionS = null;
        Servicio servicio = new Servicio();

        try {
            con = (Connection) Conexion.getConexion();
            st = (Statement) con.createStatement();
            rs = st.executeQuery(sql);
            if (rs.next()) {

                nombreS = rs.getString("nombre");
                descripcionS = rs.getString("descripcion");
                servicio = new Servicio(nombreS, descripcionS);
            }


            rs.close();
            st.close();

        } catch (Exception e) {
            System.out.println("Error al obtener la SERIE DE FACTURACION \n " + e.getMessage());
        } finally {
            Conexion.cerrarConexion(con);
        }
        return servicio;
    }

    public static ArrayList<Servicio> obtenerServicios() {

        // sentencia SQL
        String sql = "select * from servicio";

        // declaracion de variables para el objeto SFacturacion
        ArrayList<Servicio> lista = new ArrayList();
        String nombre = null;
        String descripcion = null;

        // declaracion de variables para la conexion de la BD
        Connection con = null;
        Statement st = null;
        ResultSet rs = null;

        try {
            con = (Connection) Conexion.getConexion();
            st = (Statement) con.createStatement();
            rs = st.executeQuery(sql);

            while (rs.next()) {

                nombre = rs.getString("nombre");
                descripcion = rs.getString("descripcion");
                Servicio servicio = new Servicio(nombre, descripcion);
                lista.add(servicio);
            }

            rs.close();
            st.close();
        } catch (Exception e) {
            System.out.println("Error al obtener los servicios \n " + e.getMessage());
        }
        return lista;
    }

    public static int eliminarServicio(String nombre) {

         int insertado = 0;
        
        Connection con = null;
        Statement st = null;
        //ResultSet rs = null;

        String sql = "delete from servicio where nombre = '" + nombre + "';";

        try {
            con = (Connection) Conexion.getConexion();
            st = (Statement) con.createStatement();
            insertado = st.executeUpdate(sql);

        } catch (Exception e) {
            System.out.println("Error al obtener la SERIE DE FACTURACION \n " + e.getMessage());
        } finally {
            Conexion.cerrarConexion(con);
        }
        return insertado;
    }
}
